<?php

namespace Modules\Admin\Http\Controllers;

use Houdunwang\Module\Facade\HdModuleConfig;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Illuminate\Routing\Controller;
use Modules\Admin\Http\Requests\RoleRequest;
use Spatie\Permission\Models\Role;
class RoleController extends Controller
{
    /**
     * Display a listing of the resource.
     * @return Response
     */
    public function index()
    {
        //获取所有角色数据
        $roles = Role::where('name','!=',config('hd_module.webmaster'))->get();
        return view('admin::role.index',compact('roles'));
    }

    /**
     * Show the form for creating a new resource.
     * @return Response
     */
    public function create()
    {
        return view('admin::create');
    }

    /**
     * Store a newly created resource in storage.
     * @param  Request $request
     * @return Response
     */
    public function store(RoleRequest $request)
    {
        //dd($request);
        //roles表中的guard_name字段会自动获取当前登录用户的守卫名称
       Role::create([
           'name'=>$request->input('name'),
           'title'=>$request->input('title'),
       ]);
       //设置闪存并跳转
        session()->flash('success','成员角色添加成功！！！');
        return redirect()->route('role.index');

    }

    /**
     * Show the specified resource.
     * @return Response
     */
    public function show()
    {
        return view('admin::show');
    }

    /**
     * Show the form for editing the specified resource.
     * @return Response
     */
    public function edit()
    {
        return view('admin::edit');
    }

    /**
     * Update the specified resource in storage.
     * @param  Request $request
     * @return Response
     */
    public function update(RoleRequest $request,$id)
    {
        //dd($request->all());
        //通过$id找到对应角色的数据
        $role = Role::find($id);
        //dd($role->toArray());
        $role->title = $request->input('title');
        $role->name = $request->input('name');
        //将编辑后的数据存入数据库
        $role->save();
        //设置闪存并返回
        session()->flash('success','角色修改成功！！！');
        return redirect()->route('role.index');

    }

    /**
     * Remove the specified resource from storage.
     * @return Response
     */
    public function destroy($id)
    {
        //用id找到对应的数据
        $role = Role::find($id);
        //判断如果当前需要删除的角色英文标识name名等于网站站长就不允许删除
        if($role['name']==config('hd_module.webmaster')){
            session()->flash('danger','请不要花样作死！！！');
            return back();
        }
        //删除对应id的角色数据
        Role::destroy($id);
        //设置闪存信息并返回
        session()->flash('success','角色删除成功！！！');
        return back();
    }
    /**
     * 展示所有权限模板方法
     */
    public function showPermission($roleid){
        //echo '111';
//        dd($roleid);
        //根据roleid获取对应角色数据
        $role = Role::find($roleid);
        //获取所有模块的权限数据
        $permissions = \HDModule::getPermissionByGuard('admin');
        //dd($permissions);
        return view('admin::role.permission',compact('permissions','role'));
    }

    public function permission(Request $request,$roleid){
        //echo '13';
        //dd($request->all());
        //判断post数据中是否存在name值 如果不存在就代表一个权限都没有勾选我们选择提示至少勾选一个或返回
        if(!$request->input('name')){
            session()->flash('danger','请至少选择一个权限分配，或者取消！！！');
            //return redirect()->route('role.index');
            return back();
        }
        //给对应角色添加对应权限的数据，先获取到当前角色id所对应的角色
        $role = Role::find($roleid);
        //实时同步添加权限
        $role->syncPermissions($request->input('name'));
        //设置闪存并返回
        session()->flash('success','权限分配成功！！！');
        return redirect()->route('role.index');
    }
}
